package main

import (
	"fmt"
	"reflect"
)

type myInt int

func reflectValue(x interface{}) {
	v := reflect.ValueOf(x)
	kind := v.Kind()

	switch kind {
	case reflect.Int:
		fmt.Printf("int类型的原始值%v,计算后的值是%v\n", v.Int(), v.Int()+10)
	case reflect.Float32:
		fmt.Printf("float32类型的原始值%v,计算后的值是%v\n", v.Float(), v.Float()+3.14)
	case reflect.Float64:
		fmt.Printf("float64类型的原始值%v,计算后的值是%v\n", v.Float(), v.Float()+10.1)
	case reflect.String:
		fmt.Printf("string类型的原始值%v\n", v.String())
	default:
		fmt.Println("未知类型")
	}

}

func main() {
	var a int = 11
	reflectValue(a) //int类型的原始值11,计算后的值是21

	var b myInt = 12
	reflectValue(b) //int类型的原始值12,计算后的值是22

	var c float32 = 13.14
	reflectValue(c) //float32类型的原始值13.140000343322754,计算后的值是16.280000343322754

	var d float64 = 14.15
	reflectValue(d) //float64类型的原始值14.15,计算后的值是24.25
}
